﻿#define _CRT_SECURE_NO_WARNINGS 1



//#include <iostream>
//#include <string>
//using namespace std;
//
//int main()
//{
//    string str;
//    string substrs;
//    int substrlength = 0;
//    cin >> str >> substrlength;
//    int count = 0;
//    int maxcount = 0;
//    for (int i = 0; i < str.size(); i++)
//    {
//        int j = i;
//        while (i + substrlength - 1 < str.size() && j < i + substrlength)
//        {
//            if (str[j] == 'C' || str[j] == 'G')
//            {
//                count++;
//            }
//            j++;
//        }
//
//        if (count > maxcount)
//        {
//            substrs = str.substr(i, substrlength);
//            maxcount = count;
//        }
//        count = 0;
//
//    }
//    cout << substrs << endl;
//    return 0;
//}


//分组
//错误，不知原因
//#include <functional>
//#include <iostream>
//#include <utility>
//#include <vector>
//#include <map>
//#include <algorithm>
//using namespace std;
//
//int main()
//{
//    long long n = 0, m = 0;
//    cin >> n >> m;
//    vector<int> v(n);
//    multimap<int, int, greater<>> mp;
//    for (int i = 0; i < n; i++)
//    {
//        cin >> v[i];
//    }
//    sort(v.begin(), v.end());
//    int x = 1;
//    for (int i = 1; i < n; i++)
//    {
//        if (v[i] == v[i - 1])
//        {
//            x++;
//        }
//        else
//        {
//            mp.insert(make_pair(x, v[i - 1]));
//            x = 1;
//        }
//
//        if (i == n - 1)
//        {
//            mp.insert(make_pair(x, v[i]));
//        }
//    }
//
//    if (mp.size() == m)
//    {
//        multimap<int, int>::iterator it = mp.begin();
//        cout << it->first << endl;
//    }
//    else if (mp.size() > m)
//    {
//        cout << -1 << endl;
//    }
//    else
//    {
//        while (mp.size() != m)
//        {
//            multimap<int, int>::iterator it = mp.begin();
//            int x1 = it->first / 2;
//            int x2 = it->first - x1;
//            int y = it->second;
//            mp.erase(it);
//            mp.insert(make_pair(x1, y));
//            mp.insert(make_pair(x2, y));
//        }
//        cout << mp.begin()->first << endl;
//    }
//    return 0;
//}


//#include <iostream>
//#include <vector>
//#include <queue>
//using namespace std;
//
//int main()
//{
//    int n, m;
//    cin >> n >> m;
//    vector<bool> marked(n + 1, false);
//    vector<int> in(n + 1, 0);
//    vector<vector<int>> out(n + 1);
//    for (int i = 0; i < m; ++i)
//    {
//        int from, to;
//        cin >> from;
//        cin >> to;
//        out[from].push_back(to);
//        ++in[to];
//    }
//    queue<int> wait;
//    vector<int> res;
//    for (int v = 1; v <= n; ++v)
//    {
//        if (in[v] == 0)  wait.push(v);
//    }
//    while (!wait.empty())
//    {
//        int v = wait.front();
//        wait.pop();
//        res.push_back(v);
//        for (auto u : out[v])
//        {
//            if (--in[u] == 0)  
//                wait.push(u);
//        }
//    }
//    if (res.size() == n)
//    {
//        for (int i = 0; i < n; ++i)
//        {
//            cout << res[i];
//            if (i != n - 1) cout << ' ';
//        }
//    }
//    else
//    {
//        cout << -1;
//    }
//}



//#include <iostream>
//#include <algorithm>
//#include <cmath>
//using namespace std;
//
//int main()
//{
//    long long x = 0;
//    cin >> x;
//    long long y = 1;
//    while (pow(y, 2) <= x)
//    {
//        y++;
//    }
//    long long a = max(pow(y - 1, 2) - x, x - pow(y - 1, 2));
//    long long b = max(pow(y, 2) - x, x - pow(y, 2));
//    if (a < b)
//    {
//        y = pow(y - 1, 2);
//    }
//    else
//    {
//        y = pow(y, 2);
//    }
//    cout << y << endl;
//    return 0;
//}


//class Solution {
//public:
//    /**
//     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
//     *
//     *
//     * @param str string字符串 原串
//     * @param arg char字符型vector 需替换数组
//     * @return string字符串
//     */
//    string formatString(string str, vector<char>& arg) {
//        string::iterator it = str.begin();
//        int i = 0;
//        while (it != str.end())
//        {
//            if (*it == '%')
//            {
//                it = str.erase(it, it + 2);
//                it = str.insert(it, arg[i++]);
//            }
//            it++;
//        }
//        while (i < arg.size())
//        {
//            str.push_back(arg[i++]);
//        }
//        return str;
//    }
//};


//#include <iostream>
//#include <vector>
//using namespace std;
//
//int main()
//{
//    int a = 0, b = 0;
//    int count = 0;
//    cin >> a >> b;
//    for (int i = a; i <= b; i++)
//    {
//        int m = i;
//        vector<int> v;
//        while (m)
//        {
//            v.push_back(m % 10);
//            m /= 10;
//        }
//        for (int j = 0; j < v.size(); j++)
//        {
//            int x = v[j];
//            for (int k = 0; k < v.size(); k++)
//            {
//                int y = v[k];
//                if (j != k && x != 0)
//                {
//                    int xy = 10 * x + y;
//                    int o = 2;
//                    while (o <= xy)
//                    {
//                        if (xy % o == 0)
//                        {
//                            break;
//                        }
//                        o++;
//                    }
//                    if (o == xy)
//                    {
//                        count++;
//                        j = v.size();
//                        break;
//                    }
//                }
//            }
//        }
//    }
//    cout << count << endl;
//    return 0;
//}


